A wide variety of different types of data storage systems are known, including, by way of example, tiered storage systems, cloud storage systems and storage systems of virtual data centers. These and other data storage systems typically comprise one or more sets of storage devices, also referred to as storage arrays.
Enterprise application users and other users generally want to achieve targeted performance levels and predictability from their data storage systems. However, under certain conditions these goals can be difficult to achieve in practice. For example, data storage systems are typically designed to include multiple tuning mechanisms that allow administrators to make adjustments to storage policies, parameters, thresholds, configurations, algorithms, and other characteristics of system operation. Although these low-level tuning mechanisms can be very helpful, they can also present a challenge to administrators in terms of understanding the impact of various choices and the interactions among the various choices as situations change over time. The result is that choices are often avoided, or made arbitrarily, or without knowledge of the likely effects. Tuning mechanisms that might help are not even activated through lack of knowledge of best practices and of the current situational requirements. Unfortunately, this can lead to sub-optimal or unpredictable system performance.
Administrators therefore have to become experts at setting storage policies, choosing parameters, tweaking configurations, and understanding interactions among policies. Nonetheless, it remains difficult to adjust to changing workloads, missed performance targets, fluctuating performance, and sudden demands on system resources, and total cost of operation increases significantly due to the expertise and attention required of administrative personnel.
Accordingly, a need exists for a data storage system that provides automated management across multiple policies, parameters, thresholds, configurations, algorithms or other characteristics of system operation in the presence of changing situations, so as to improve system performance and to avoid the need for system administrators to become experts at low-level tuning mechanisms.